package yl.hs.bmipfull.service.system;


import yl.hs.bmipfull.pojo.system.RoleInfoEntity;
import yl.hs.bmipfull.service.IBaseService;

import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.PageResult;

import java.util.List;
import java.util.Map;

/**
 * IRoleService 角色信息服务接口
 * 系统管理-角色信息服务
 * @author 谢景广
 * @date 2021-05-10
 */
public interface IRoleService extends IBaseService {
    /**
     * 根据角色编号获取角色信息
     * @param sn 角色编号
     * @return 角色信息
     */
    RoleInfoEntity findRoleBySn(String sn);

    /**
     * 保存角色信息
     * @param roleModel 角色表单信息
     * @param sn 角色信息原有编号
     * @return 更新结果
     * @throws Exception 保存异常
     */
    Integer saveRoleInfo(Map<String,Object> roleModel,String sn) throws Exception;

    /**
     * 分页查询角色信息
     * @param query 分页查询参数
     * @return 查询结果
     */
    PageResult<RoleInfoEntity> queryPage(PageQuery query,int rowNum,int page);

    /**
     * 获取所有可用角色
     * @return 角色信息集合
     */
    List<RoleInfoEntity> queryAll();

    /**
     * 根据角色编号删除角色信息
     * @param sn 角色编号数组
     * @return
     */
    Integer deleteRoleBySN(String[] sn);

    List<Map<String,Object>> findUserMenus(String userSN,boolean isAdmin) throws ClassNotFoundException;

    List<String> queryRolePermission(String roleSN);


    Integer saveRolePermission(String roleSN,List<String> permissions);

    Map<String,Object> getAllRoleMap();
}
